package com.lma.crm.coursetype.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.StringUtils;

import com.lma.crm.coursetype.dao.CrmCourseTypeDao;
import com.lma.crm.coursetype.domain.CrmCourseType;
import com.lma.crm.coursetype.service.CrmCourseTypeService;
import com.lma.crm.page.PageBean;

public class CrmCourseTypeServiceImpl implements CrmCourseTypeService {

    private CrmCourseTypeDao courseTypeDao;
    public void setCourseTypeDao(CrmCourseTypeDao courseTypeDao) {
        this.courseTypeDao = courseTypeDao;
    }
    
//    @Override
//    public List<CrmCourseType> findAll() {
//        return courseTypeDao.findAll();
//    }

    @Override
    public List<CrmCourseType> findAll(CrmCourseType crmCourseType) {
        
        //拼接查询语句
        StringBuilder conditionTemp = new StringBuilder();
        //查询条件
        List<Object> paramsList = new ArrayList<Object>();
        
        if(StringUtils.isNotBlank(crmCourseType.getCourseName())) {
            conditionTemp.append(" and courseName like ?");
            paramsList.add("%" + crmCourseType.getCourseName() + "%");
        }
        if(StringUtils.isNotBlank(crmCourseType.getRemark())) {
            conditionTemp.append(" and remark like ?");
            paramsList.add("%" + crmCourseType.getRemark() + "%");
        }
        if(StringUtils.isNotBlank(crmCourseType.getTotalStart())) {
            conditionTemp.append(" and total >= ?");
            paramsList.add(Integer.parseInt(crmCourseType.getTotalStart()));
        }
        if(StringUtils.isNotBlank(crmCourseType.getTotalEnd())) {
            conditionTemp.append(" and total <= ?");
            paramsList.add(Integer.parseInt(crmCourseType.getTotalEnd()));
        }
        if(StringUtils.isNotBlank(crmCourseType.getCourseCostStart())) {
            conditionTemp.append(" and courseCost >= ?");
            paramsList.add(Double.parseDouble(crmCourseType.getCourseCostStart()));
        }
        if(StringUtils.isNotBlank(crmCourseType.getCourseCostEnd())) {
            conditionTemp.append(" and courseCost <= ?");
            paramsList.add(Double.parseDouble(crmCourseType.getCourseCostEnd()));
        }
        
        //查询语句
        String condition = conditionTemp.toString();
        //查询参数
        Object[] params = paramsList.toArray();
        
        return courseTypeDao.findAll(condition, params);
    }

    @Override
    public CrmCourseType findById(String courseTypeId) {
        return this.courseTypeDao.findById(courseTypeId);
    }

    @Override
    public void addOrEdit(CrmCourseType courseType) {
        this.courseTypeDao.addOrEdit(courseType);
    }

	@Override
	public PageBean<CrmCourseType> findAll(CrmCourseType courseType, int pageNum, int pageSize) {

        //拼接查询语句
        StringBuilder conditionTemp = new StringBuilder();
        //查询条件
        List<Object> paramsList = new ArrayList<Object>();
        
        if(StringUtils.isNotBlank(courseType.getCourseName())) {
            conditionTemp.append(" and courseName like ?");
            paramsList.add("%" + courseType.getCourseName() + "%");
        }
        if(StringUtils.isNotBlank(courseType.getRemark())) {
            conditionTemp.append(" and remark like ?");
            paramsList.add("%" + courseType.getRemark() + "%");
        }
        if(StringUtils.isNotBlank(courseType.getTotalStart())) {
            conditionTemp.append(" and total >= ?");
            paramsList.add(Integer.parseInt(courseType.getTotalStart()));
        }
        if(StringUtils.isNotBlank(courseType.getTotalEnd())) {
            conditionTemp.append(" and total <= ?");
            paramsList.add(Integer.parseInt(courseType.getTotalEnd()));
        }
        if(StringUtils.isNotBlank(courseType.getCourseCostStart())) {
            conditionTemp.append(" and courseCost >= ?");
            paramsList.add(Double.parseDouble(courseType.getCourseCostStart()));
        }
        if(StringUtils.isNotBlank(courseType.getCourseCostEnd())) {
            conditionTemp.append(" and courseCost <= ?");
            paramsList.add(Double.parseDouble(courseType.getCourseCostEnd()));
        }
        
        //查询语句
        String condition = conditionTemp.toString();
        //查询参数
        Object[] params = paramsList.toArray();
		
        //查询全部记录数
        int totalRecord = this.courseTypeDao.getTotalRecord(condition, params);
        //创建PageBean对象
        PageBean<CrmCourseType> pageBean = new PageBean<CrmCourseType>(pageNum, pageSize, totalRecord);
        //查询得到分页数据
        List<CrmCourseType> data = this.courseTypeDao.findAll(condition, params, pageBean.getStartIndex(), pageBean.getPageSize());
        
        pageBean.setData(data);
        
		return pageBean;
	}
    
}
